function print() {
    var test = {
        name: 'Jack',
        sayHello: function() {
            console.log(this.name);
        }
    }

    var test1 = { name: 'test1' };
    var test2 = { name: 'test2' };
    var test3 = { name: 'test3' };
    test3.sayHello = test.sayHello;
    var sayHello2 = test.sayHello.bind({name: 'test4'});

    test.sayHello.call(test1); // test1
    test.sayHello.apply(test2); // test2
    test.sayHello(); // Jack
    sayHello2(); // test4
    test3.sayHello(); // test3
}

print();